#文件控制
import time

# 一、文件读取
#open(filename,mode,encoding='UTF8')
#使用open打开D:\test下的test.txt
f = open("D:\\my_test\\my_test.txt",'r',encoding='UTF8')

# print(f.read()) # 1.读取全部 全部一起作为字符串返回

# print(f.read(2)) # 2.读取前2个字符(注意是字符而非字节，具体为一个字)

# print(f.readline()) # 3.读取一行，返回一个str
#f.readline()配合while
# while True:
#     line = f.readline()
#     if not line:
#         break
#     print(line)


# print(f.readlines()) # 4.读取全部行，返回为一个列表list，包含每一行的数据 ['测试\n', '一下\n', '你好\n', '啊\n', '什么']
# f.readlines()配合for
# for line in f.readlines():
#     print(line,end='')

# for循环读取文件，每次读取一行
# for line in f:
#     print(line,end='')

#注意多次调用read或readline，会从上次读取位置开始

#二.关闭文件
f.close()

#使用with open() as f:
with open("D:\\my_test\\my_test.txt",'r',encoding='UTF8') as f:
    print(f.read())

#案例：
# 通过Windows的文本编辑器软件，将如下内谷，夏制并保存到word.txt
# 通过文件读取操作，读取此文件，统计abc单词出现的次数
with open("D:\\my_test\\my_test.txt",'r',encoding='UTF8') as f:
    times = 0
    #方式1使用readlines+for
    # for i in f.readlines():
    #     times += i.count('abc')
    #方式2使用read
    # times += f.read().count('abc')
    #方式3使用for 注意最后面字符会有\n
    for i in f:
        #3.1使用count
        times += i.count('abc')
        #3.2如果是单词(这里不是),去除后面的\，然后再使用split
        # i = i.strip()
        # for j in i.split(" "):
        #     if j == 'abc':
        #         times += 1
    print(f"abc出现的次数为{times}")

#文件写入
#open(filename,mode,encoding='UTF8')
# w模式：1.没有则会创建 2.有则清空
f = open("D:\\my_test\\my_test.txt",'w',encoding='UTF8')
# write写入 默认是写入缓冲区
f.write("测试一下\n")
f.write("你好啊\n")
# time.sleep(1000)
# flush刷新缓冲区,写入硬盘
f.flush()
# close关闭文件 自带flush会将内存写入缓冲区
f.close()

#文件追加
f = open("D:\\my_test\\my_test.txt",'a',encoding='UTF8')
f.write("追加写入\n")
f.close()
# with open("D:\\my_test\\my_test.txt",'a',encoding='UTF8') as f:
#     f.write("追加写入\n")

#案例：存在账单.txt
# 林俊节,2022-01-01,300000,收入,正式
# 林俊节,2022-01-02,100000,消费,测试
# 林俊节,2022-01-03,100000,消费,正式
# 林俊节,2022-01-04,100000,消费,测试
# 林俊节,2022-01-05,500000,收入,正式
# 张学油,2022-01-01,100000,消费,正式
# 备份正式的账单记录 为 账单备份
f1 = open("D:\\my_test\\账单.txt",'r',encoding='UTF8')
f2 = open("D:\\my_test\\账单备份.txt",'w',encoding='UTF8')
for i in f1:
    i = i.strip()
    split = i.split(",")
    if split[len(split) - 1] == '正式':
        f2.write(i)
        f2.write("\n")
f1.close()
f2.close()